HotSpot

HotSpot
Developer(s) Oracle Corporation (previously Sun Microsystems)
Stable release 20.0-b11
Written in C++
Operating system Cross-platform
Type Java Virtual Machine
License GNU General Public License
Website Sun's OpenJDK Hotspot page

HotSpot is a Java virtual machine for desktops and servers, maintained and distributed by Oracle Corporation. It features techniques such as just-in-time compilation and adaptive optimization designed to improve performance.

Contents

History

HotSpot, first released April 27, 1999, was originally developed by Longview Technologies, LLC which was doing business as Animorphic, a small startup company formed in 1994. Animorphic's virtual machine technology had earlier been successfully used in a Sun research project, the Self programming language. In 1997, Longview Technologies, LLC (DBA Animorphic) was purchased by Sun Microsystems.[1] Initially available as an add-on for Java 1.2, HotSpot became the default Sun JVM in Java 1.3.[2]

Its name derives from the fact that as it runs Java bytecode, it continually analyzes the program's performance for "hot spots" which are frequently or repeatedly executed. These are then targeted for optimization, leading to high performance execution with a minimum of overhead for less performance-critical code. In some cases, it is possible for adaptive optimization of a JVM to exceed the performance of hand-coded C++ or C code.[3]

Features

Sun's JRE features two virtual machines, one called Client and the other Server. The Client version is tuned for quick loading. It makes use of interpretation. The Server version loads more slowly, putting more effort into producing highly optimized JIT compilations, that yield higher performance. Both VMs compile only often-run methods, using a configurable invocation-count-threshold to decide which methods to compile.

The HotSpot Java virtual machine is written in C++. As stated in HotSpot web page, the source contains approximately 250,000 lines of code.[4] Hotspot provides:

The version of HotSpot for Microsoft Windows runs a background process jucheck.exe, which continually checks for updates from Oracle.[5]

JVM flags

HotSpot supports many command-line arguments for options of the virtual machine execution. Some are standard and must be found in any conforming Java virtual machine, others are specific to HotSpot and may not be found in other JVMs (options that begin with -X or -XX are non-standard).[6][7][8][9]

License

On 13 November 2006, the Sun JVM and JDK were licensed[10] under the GPL version 2 (see Sun's OpenJDK Hotspot page). This is the code that became part of Java 7 (codename Dolphin[11]).

Supported platforms

Maintained by Oracle

As for the whole JDK, HotSpot is supported by Oracle Corporation on Microsoft Windows, Linux, and Solaris. Supported ISAs are IA-32, x86-64 and SPARC (exclusive to Solaris).[12]

Ports by third parties

Ports are also available by third parties for Mac OS X and various other Unix operating systems. Several different hardware architectures are supported, including x86, PowerPC, and SPARC (Solaris only).

Porting HotSpot is difficult because the code, while primarily written in C++, contains a lot of assembly language.[13] To remedy this, the IcedTea project has developed a generic port of the HotSpot interpreter called zero-assembler Hotspot (or zero), with almost no assembly code. This port is intended for easy adaptation of the interpreter component of HotSpot to any Linux processor architecture. The code of zero-assembler Hotspot is used for all the non-x86 ports of HotSpot (PPC, IA64, S390 and ARM) since version 1.6.[14][15][16]

Gary Benson, an IcedTea developer, developed a platform-independent Just-in-time compiler called Shark for HotSpot, using LLVM, to complement zero.[17][18]

See also

Free software portal
Java portal

References

  1. ^ "Sun's Gosling Previews Hotspot Java Virtual Machine". ComputerGram. 1998-02-13. http://findarticles.com/p/articles/mi_m0CGN/is_n3348/ai_20359903/pg_1. Retrieved 2008-04-20. 
  2. ^ "Sun Microsystems releases fastest client-side Java platform to date". Sun Microsystems. 2000-05-08. http://www.sun.com/smi/Press/sunflash/2000-05/sunflash.20000508.3.xml. Retrieved 2007-10-03. 
  3. ^ Lewis, J.P. (2004). "Performance of Java versus C++". http://scribblethink.org/Computer/javaCbenchmark.html. Retrieved 2007-10-03. 
  4. ^ "The HotSpot Group". Sun Microsystems. 2007. http://openjdk.java.net/groups/hotspot/. Retrieved 2007-10-03. "There are nearly 1500 C/C++ header and source files, comprising almost 250,000 lines of code" 
  5. ^ "What is jucheck.exe?". Java.com. http://www.java.com/en/download/faq/jucheck.xml. Retrieved 17 August 2011. 
  6. ^ "Java HotSpot VM Options". Sun Microsystems. http://java.sun.com/javase/technologies/hotspot/vmoptions.jsp. Retrieved 2009-02-08. 
  7. ^ Mocker, Joseph D. (2007-08-28). "A Collection of JVM Options". Archived from the original on 2011-04-30. http://web.archive.org/web/20110430195227/http://blogs.sun.com/watt/resource/jvm-options-list.html. Retrieved 2009-02-08. 
  8. ^ Maximovich, Dmitri. "The most complete list of -XX options for Java 6 JVM". Archived from the original on 2010-01-30. http://web.archive.org/web/20100130070337/http://www.md.pp.ru/%7Eeu/jdk6options.html. Retrieved 2009-02-08. 
  9. ^ Nutter, Charles (2009-01-29). "My Favorite Hotspot JVM Flags". http://blog.headius.com/2009/01/my-favorite-hotspot-jvm-flags.html. Retrieved 2009-02-08. 
  10. ^ "Sun Opens Java". Sun Microsystems. 2006-11-13. http://www.sun.com/aboutsun/media/presskits/2006-1113/. Retrieved 2007-10-03. 
  11. ^ JDK7, Sun.
  12. ^ "Supported System Configurations". Sun Microsystems. http://java.sun.com/javase/6/webnotes/install/system-configurations.html. Retrieved 2008-01-26. 
  13. ^ Gary, Benson (2007-11-06). "Gary's guide to porting IcedTea". http://gbenson.livejournal.com/2007/11/16/. Retrieved 2008-01-26. 
  14. ^ Gary, Benson (2008-02-01). "1st February 2008". http://gbenson.livejournal.com/2008/02/01/. Retrieved 2008-02-03. 
  15. ^ Andrew, Haley (2008-01-31). "Making zero-assembler the default on ppc". http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2008-January/001085.html. Retrieved 2008-02-03. 
  16. ^ Lilian, Angel (2008-02-13). "IcedTea 1.6 Released with Zero-assembler and JNLP support!". Red hat. http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2008-February/001172.html. Retrieved 2008-02-13. 
  17. ^ Gary, Benson (2008-03-31). "31 March 2008". Red hat. http://gbenson.net/?p=67. Retrieved 2008-05-30. 
  18. ^ Gary, Benson (2008-05-28). "28 May 2008". Red hat. http://gbenson.net/?p=80. Retrieved 2008-05-30. "Shark is a platform-independent JIT for HotSpot, to complement the zero-assembler interpreter we’ve been using" 

External links